vector<double> DivideMerge::polynomialsMultiply(vector<double>&numA, int lowA, int highA, vector<double>&numB, int lowB, int highB)
{
	vector<double>numXY,numXYZ;
	vector<double>numX, numY, numZ;                                                            
 
	if (lowA < highA && lowB<highB)
	{
		int midA = (highA + lowA) / 2;
		int midB = (highB + lowB) / 2;
 
		numX = polynomialsMultiply(numA, lowA, midA, numB, lowB, midB);
 
		vector<double> numa, numb;
		int dy;                 //交叉相乘递归
		numa = polynomialsMultiply(numA, lowA, midA, numB, midB + 1, highB);
		numb = polynomialsMultiply(numA, midA + 1, highA, numB, lowB, midB);
		numY = crossAdd(numa, midA, highB, numb, highA, midB,dy);  //A0*B1+A1*B0
 
		int dxy;
		numXY = crossAdd(numX, midA, midB, numY, 0, dy, dxy);     //A0B0+(A0B1+A1B0)
		numZ = polynomialsMultiply(numA, midA + 1, highA, numB, midB + 1, highB);              
 
		int dxyz;
		numXYZ = crossAdd(numXY, 0, dxy, numZ, highA, highB,dxyz);
	}
else
	{
	 numXYZ.push_back(numA[lowA] * numB[lowB]);                                                 
	}
}